package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootQd;
import org.footballmanager.pandafootball.system.domain.FootTeam;
import org.footballmanager.pandafootball.system.domain.FootUser;
import org.footballmanager.pandafootball.system.form.impl.FootTeamSearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface FootTeamService extends BaseService<FootTeam> {
    /**
     * 是否破产
     *
     * @param request 请求
     */
    void isPc(HttpServletRequest request);

    /**
     * 发奖励
     *
     * @param sj      赛季
     * @param isRank  是否排名
     * @param request 请求
     */
    void fjl(Long sj, boolean isRank, HttpServletRequest request);

    /**
     * 根据用户主键，查找用户team
     *
     * @param userId 用户主键
     * @return 球队信息
     */
    FootTeam getTeamByUserid(Long userId);

    /**
     * 找出赛季常规赛的前top - buttom名
     *
     * @param sjid   赛季编码
     * @param top    第一
     * @param buttom 最后
     * @return 球队列表
     */
    List<FootTeam> findTopClub(Long sjid, Integer top, Integer buttom);

    /**
     * 根据用户主键获得球队LOGO
     *
     * @param userId 用户主键
     * @return logo
     */
    Long getLogoByUserid(Long userId);

    /**
     * 根据用户主键获得球队缩略图
     *
     * @param userId 用户主键
     * @return slt
     */
    Long getSltByUserid(Long userId);

    /**
     * 保存新的队伍信息到数据库
     *
     * @param user 用户
     * @param qd   球队
     */
    void saveNewTeam(FootUser user, FootQd qd, HttpServletRequest request);

    /**
     * 根据用户主键给该球队生成初始资金
     *
     * @param userId 用户主键
     * @param qdmc   球队名称
     * @param qdId   球队主键
     */
    void createZjTeamByUserId(Long userId, Long qdId, String qdmc, HttpServletRequest request);

    /**
     * 根据球队主键获取记录列表
     *
     * @param qdId 球队主键
     * @return 列表
     */
    List<FootTeam> findTeamByQdId(Long qdId);

    /**
     * 翻页方法
     *
     * @param footTeamSearchForm 条件
     * @return 列表
     */
    List<FootTeam> findall(FootTeamSearchForm footTeamSearchForm);

    /**
     * 查询
     *
     * @param entityname         实体类名
     * @param map                参数
     * @param footTeamSearchForm 条件
     */
    void search(String entityname, Model map, FootTeamSearchForm footTeamSearchForm);

    /**
     * 删除所有
     *
     * @param footTeamSearchForm 条件
     * @param request            请求
     */
    void deleteAll(FootTeamSearchForm footTeamSearchForm, HttpServletRequest request);

    /**
     * 更新team记录
     *
     * @param entity  实体类
     * @param request 请求
     * @return 是否成功
     */
    int update(FootTeam entity, HttpServletRequest request);

    /**
     * 根据用户主键删除对应记录
     *
     * @param userId  用户主键
     * @param request 请求
     */
    void deleteByUserId(Long userId, HttpServletRequest request);

    /**
     * 花费金额获取球员的一系列数据操作
     * @param userId 用户主键
     * @param needPay 花费金额
     * @param fullName 球员名称
     * @param request 请求
     */
    void payQy(Long userId, Double needPay, String fullNameFromPerson, HttpServletRequest request);
}